<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>回调函数的分类</title>
  </head>
  <body>
    <!-- 
        什么是回调？我们定义的、没有调用、但最终执行了。

        1、同步的回调函数：
            理解：立即在主线程上执行，不会放入回调队列中。
            eg：
            数组遍历相关的回调函数/ Promise的executor函数
        2、异步的回调函数
            理解：不会立即执行，会放入回调队列中以后执行
            eg：
                定时器回调 / ajax 回调 /Promise的成功、失败的回调
     -->
    <script>
      // 演示同步的回调函数
      //   let arr = [1, 4, 5, 7, 9]
      //   arr.forEach((item) => {
      //     console.log(item)
      //   }) //同步回调
      // console.log('主线程')

      // 演示异步的回调
      setTimeout(() => {
        console.log('@@@')
      }, 1000)
      console.log('主线程')
    </script>
  </body>
</html>
